A Service-Oriented Architecture (SOA) may create services for retrieving data. Data federation can leverage such services because it can access different types of data sources (e.g., web-based services out of the box, flat files, or Java EE Connector Architecture (JCA) components). A federated system is a collection of cooperating but autonomous data sources belonging to a federation. The autonomous data sources belonging to the federation cooperate with each other yet maintain some degree of autonomy. A federated system allows a client to send requests to multiple data sources with the use of a single federated query. A federated query is a query that contains several source queries, and each source query may be specific to a data source. A source query that is specific to a data source is written in a format that is understandable by the data source and may be executable at the data source.
In a federated system, a federated server may receive a federated query from the client and send each source query embedded in the federated query to the appropriate data source for execution. When a client submits a federated query, the federated server may return a result of the federated query to the client by retrieving results from the applicable data sources.
In a federated system, a single federated query can result in data being extracted from a plurality of data sources. These data sources may be of a very different nature, ranging from relational database management systems (RDBMs) and spreadsheets to unstructured data sources such as NoSQL (non-Standard Query Language) databases and flat files. A federated query may be complicated and time consuming to process, especially one that generates a large amount of data. Additionally, it may be time consuming for the federated server to wait for each of the data sources to respond to a source query.